 /**
 * 格式化日期为友好显示格式
 * @param {Date|String|Number} date 日期对象或时间戳
 * @returns {String} 格式化后的日期字符串
 */
export function formatDate(date) {
    if (!date) return '';
    
    // 如果传入的不是Date对象，则转换为Date对象
    if (!(date instanceof Date)) {
        date = new Date(date);
    }
    
    const now = new Date();
    const diff = now - date; // 时间差（毫秒）
    
    // 今天的日期（年月日）
    const today = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();
    
    // 昨天的日期（年月日）
    const yesterday = today - 24 * 60 * 60 * 1000;
    
    // 日期（年月日）
    const dateDay = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();
    
    // 小于1分钟，显示"刚刚"
    if (diff < 60 * 1000) {
        return '刚刚';
    }
    
    // 小于1小时，显示"xx分钟前"
    if (diff < 60 * 60 * 1000) {
        return Math.floor(diff / (60 * 1000)) + '分钟前';
    }
    
    // 当天，显示"今天 HH:MM"
    if (dateDay === today) {
        return '今天 ' + padZero(date.getHours()) + ':' + padZero(date.getMinutes());
    }
    
    // 昨天，显示"昨天 HH:MM"
    if (dateDay === yesterday) {
        return '昨天 ' + padZero(date.getHours()) + ':' + padZero(date.getMinutes());
    }
    
    // 一周内，显示"星期x HH:MM"
    if (diff < 7 * 24 * 60 * 60 * 1000 && dateDay > yesterday) {
        const weekdays = ['日', '一', '二', '三', '四', '五', '六'];
        return '星期' + weekdays[date.getDay()] + ' ' + padZero(date.getHours()) + ':' + padZero(date.getMinutes());
    }
    
    // 今年内，显示"MM-DD HH:MM"
    if (date.getFullYear() === now.getFullYear()) {
        return padZero(date.getMonth() + 1) + '-' + padZero(date.getDate()) + ' ' + 
               padZero(date.getHours()) + ':' + padZero(date.getMinutes());
    }
    
    // 其他情况，显示"YYYY-MM-DD HH:MM"
    return date.getFullYear() + '-' + padZero(date.getMonth() + 1) + '-' + padZero(date.getDate()) + ' ' + 
           padZero(date.getHours()) + ':' + padZero(date.getMinutes());
}

/**
 * 数字补零
 * @param {Number} num 需要补零的数字
 * @returns {String} 补零后的字符串
 */
function padZero(num) {
    return num < 10 ? '0' + num : num;
}